Sequlize & Express. P1


Posted by Rich on 2021-08-11

這篇的目的是 express 配上 sequelize,把網站用 Node.js 跑起來~
Sequlize CLI 太好用了!所以也會用這個,開始吧!

npm init
先裝 sequelize
npm install sequelize
根據你的資料庫類型載對應的東西,詳情參考這裡
npm install --save mysql2
再裝 sequelize-cli
npm install --save sequelize
還有 express
npm install express --save
然後新增一個 index.js,內容如下:

const express = require('express')
const app = express()
const port = 5001

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

然後直接跑 node index.js 。上 localhost:5001 就可以看到 hello world 了。


Express 好了之後,要換 sequelize 了。
npx sequelize-cli init
然後會多很多檔案,config/config.json 裡面可以設定對應環境的資料庫資訊。
在本機上測試用,把 development 的帳號密碼改成 mysql 登入的帳號密碼,database 要是對應的名稱。
預設長這樣:

{
  "development": {
    "username": "root",
    "password": null,
    "database": "database_development",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },
  "test": {
    "username": "root",
    "password": null,
    "database": "database_test",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },
  "production": {
    "username": "root",
    "password": null,
    "database": "database_production",
    "host": "127.0.0.1",
    "dialect": "mysql"
  }
}


根據官方文件,我們需要輸入指令讓它生成對應的資料庫。下面的 User 對應的是資料表名稱,--attributes,後面放欄位。
npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string

註:資料類型為數字的時候是 integer。

跑完後,migrations 裡面就會多一個檔案。詳細的設定都可再去裡面調,長這樣:

'use strict';
module.exports = {
  up: async (queryInterface, Sequelize) => {
    await queryInterface.createTable('Users', {
      id: {
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        type: Sequelize.INTEGER
      },
      firstName: {
        type: Sequelize.STRING
      },
      lastName: {
        type: Sequelize.STRING
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE
      }
    });
  },
  down: async (queryInterface, Sequelize) => {
    await queryInterface.dropTable('Users');
  }
};

記得還要 npx sequelize-cli db:migrate,資料才會真的進去資料庫。
之後去資料庫就可以看到建好的 User 囉。還會有 SequelizeMeta ,是用來記錄資料庫的改變。
下一篇講如何改變資料庫的內容。










Related Posts

面試 Jan 21 2022 USC. UI developer

面試 Jan 21 2022 USC. UI developer

留言板、前端串接 API

留言板、前端串接 API

android error 有關舊程式碼改成mvvm架構

android error 有關舊程式碼改成mvvm架構


Comments